#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QKeyEvent>

QT_BEGIN_NAMESPACE
namespace Ui
{
    class MainWindow;
}
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

protected:
    // 键盘事件处理
    void keyPressEvent(QKeyEvent *event) override;

private slots:
    // 数字按钮槽函数
    void digitPressed();
    // 二元运算符按钮槽函数
    void binaryOperatorPressed();
    // 一元运算符按钮槽函数
    void unaryOperatorPressed();
    // 等号按钮槽函数
    void equalsPressed();
    // 清除按钮槽函数
    void clearPressed();
    // 清除输入按钮槽函数
    void clearEntryPressed();
    // 正负号按钮槽函数
    void changeSignPressed();
    // 小数点按钮槽函数
    void pointPressed();
    // 百分比按钮槽函数
    void percentPressed();
    // 删除按钮槽函数
    void deletePressed();

private:
    Ui::MainWindow *ui;
    // 存储当前计算的值
    double currentValue;
    // 存储等待运算的值
    double waitingValue;
    // 存储当前运算符
    QString waitingOperator;
    // 标记用户是否正在输入新数字
    bool waitingForOperand;

    // 模拟按钮点击的辅助函数
    void simulateButtonClick(const QString& buttonName);
};

#endif // MAINWINDOW_H
